package com.eduagent.xwqeduagent.api.RecordingFileTranscription.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;

/**
 * 转写结果查询响应
 */
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class ResultQueryResponse {
    /**
     * 响应码
     */
    private String code;
    
    /**
     * 错误描述
     */
    private String descInfo;
    
    /**
     * 响应内容
     */
    private Content content;
    
    /**
     * 响应内容
     */
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class Content {
        /**
         * 订单信息
         */
        private OrderInfo orderInfo;
        
        /**
         * 转写结果
         */
        private String orderResult;
        
        /**
         * 任务预估耗时（毫秒）
         */
        private Long taskEstimateTime;
    }
    
    /**
     * 订单信息
     */
    @Data
    @JsonIgnoreProperties(ignoreUnknown = true)
    public static class OrderInfo {
        /**
         * 订单ID
         */
        private String orderId;
        
        /**
         * 失败类型
         * 0: 音频正常执行
         * 1: 音频上传失败
         * 2: 音频转码失败
         * 3: 音频识别失败
         */
        private Integer failType;
        
        /**
         * 订单流程状态
         * 0: 订单已创建
         * 3: 订单处理中
         * 4: 订单已完成
         * -1: 订单失败
         */
        private Integer status;
        
        /**
         * 原始音频时长（毫秒）
         */
        private Long originalDuration;
        
        /**
         * 真实音频时长（毫秒）
         */
        private Long realDuration;
    }
    
    /**
     * 是否成功
     */
    public boolean isSuccess() {
        return "000000".equals(code);
    }
    
    /**
     * 是否完成
     */
    public boolean isCompleted() {
        return isSuccess() && content != null && content.orderInfo != null && 
               content.orderInfo.status != null && content.orderInfo.status == 4;
    }
    
    /**
     * 是否处理中
     */
    public boolean isProcessing() {
        return isSuccess() && content != null && content.orderInfo != null && 
               content.orderInfo.status != null && 
               (content.orderInfo.status == 0 || content.orderInfo.status == 3);
    }
    
    /**
     * 是否失败
     */
    public boolean isFailed() {
        return isSuccess() && content != null && content.orderInfo != null && 
               content.orderInfo.status != null && content.orderInfo.status == -1;
    }
} 